<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.父类的add方法
        class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                console.log(this.x + this.y);
            }
        }
        class Son extends Father {
            constructor(x, y, z) {
                super();
                // 1.对父类的构造函数进行了重写，
                this.x = x;
                this.y = y;
                this.z = z;

                // 2.super()  必须写在 最前面，防止子类定义的属性被覆盖。就近原则
                // super();
            }
        }
        var son = new Son(5, 3);
        console.log(son);
        // zi类对构造重写时，sum 中的this 是父类的构造函数中的this。因此报错。
        // 子类重写构造函数时，必须先手动调用父类的构造函数，即通过 super 继承
        son.sum();
    </script>
</body>

</html>